﻿#pragma once

#include <QObject>
#include <QFileInfo>
#include "UtilsExport.h"

namespace Domy {

class UTILS_EXPORT FileSystemHandler : public QObject
{
    Q_OBJECT
public:
    explicit FileSystemHandler(QObject *parent = Q_NULLPTR);
    ~FileSystemHandler();

    /**
     * @brief showInExplorer
     * @note  在资源管理器中显示
     * @param file_path 文件绝对路径
     */
    static void showInExplorer(const QString &file_path);

    /**
     * @brief rename
     * @note  重命名文件或文件夹
     * @param old_file 旧文件/文件夹信息
     * @param new_name 新名称
     * @param new_file 新文件/文件夹信息
     */
    static bool rename(const QFileInfo &old_file, const QString &new_name, QFileInfo &new_file);

    /**
     * @brief createFile
     * @note  创建文件
     * @param file_path  文件路径
     */
    static bool createFile(const QString &file_path);

    /**
     * @brief createDir
     * @note  创建文件夹
     * @param dir_path 文件夹路径
     */
    static bool createDir(const QString &dir_path);

    /**
     * @brief removeFile 删除文件
     * @param path 文件路径
     */
    static bool removeFile(const QString &path);

    /**
     * @brief removeDir
     * @note  删除文件夹
     * @param path 文件夹路径
     */
    static bool removeDir(const QString &path);

    /**
     * @brief checkName 检查名称
     * @param name      名称
     */
    static bool checkName(const QString &name);
};

} // namespace Domy
